package com.iamteer.day07;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
/**
DefaultHandler 类的 API：
	void startDocument();	在读取到文档开始时调用
	void endDocument();		在读取到文档结束时调用
	//读取到开始标签时调用
	void startElement(String uri, String localName, String qName, Attributes attributes);
	//读取到结束标签时调用
	void endElement(String uri, String localName, String qName);
	//读取到文本内容时调用
	void characters(char[] ch, int start, int length);
	


 */
import org.xml.sax.helpers.DefaultHandler;


//把 xml 文件读取到字符串中
public class MyDefaultHandler extends DefaultHandler {
	
	private StringBuffer sb = new StringBuffer();
	
	public String getContent() {
		return sb.toString();
	}
	
	@Override
	public void startDocument() throws SAXException {
		super.startDocument();
//		System.out.println("startDocument()");
	}
	
	/**
	 * 
	 * @param uri
	 * @param localName
	 * @param qName			开始标签的名字
	 * @param attributes	开始标签的属性
	 * @throws SAXException
	 */
	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		super.startElement(uri, localName, qName, attributes);
		sb.append("<" + qName);
		if (attributes != null) {
			for (int i = 0; i < attributes.getLength(); i++) {
				String attrName = attributes.getQName(i);
				String attrValue = attributes.getValue(i);
				sb.append(" " + attrName + "=\"" + attrValue + "\"");
			}
		}
		sb.append(">");
	}
	
	/**
	 * 读取到文本内容时调用
	 * @param ch		当前读到的所有文本内容
	 * @param start		当前文本内容的开始位置
	 * @param length	当前文本的内容长度
	 * @throws SAXException
	 */
	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		super.characters(ch, start, length);
		String content = new String(ch, start, length);
		sb.append(content);
	}
	
	
	/**
	 * 读取到结束标签时调用
	 * @param uri
	 * @param localName
	 * @param qName			结束标签的名字
	 * @throws SAXException
	 */
	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		super.endElement(uri, localName, qName);
//		System.out.println("endElement()");
		sb.append("</" + qName + ">");
	}
	@Override
	public void endDocument() throws SAXException {
		super.endDocument();
//		System.out.println("endDocument()");
	}
}
